package com.guoxin.part1.chapter8;

/**
 * 任务队列
 * 主要用户缓存提交到线程池中的任务
 *
 * @author guoxin
 * @date 2019/8/29
 */
public interface RunnableQueue {

    /**
     * 当有新任务进来时首先会offer到队列中
     *
     * @param runnable Runnable
     */
    void offer(Runnable runnable);

    /**
     * 工作线程通过take 方法获取Runnable
     *
     * @return Runnable
     * @throws InterruptedException 中断异常
     */
    Runnable take() throws InterruptedException;

    /**
     * 获取任务队列中任务的数量
     *
     * @return 任务数量
     */
    int size();
}
